package com.baichang.taoshunda.dao;

import com.baichang.framework.dao.BaseDao;
import com.baichang.framework.excelption.DBException;
import com.baichang.framework.model.Page;
import com.baichang.taoshunda.entity.User;

import java.util.Date;
import java.util.Map;

public interface UserDao extends BaseDao<User> {
    /**
     * 根据用户名获取用户
     *
     * @param userName 用户名
     * @return 用户
     */
    User getUserByUserName(String userName);

    /**
     * 接口
     * 根据用户id修改密码
     *
     * @param id  用户id
     * @param pwd 密码
     * @return 修改成功/失败
     */
    int updateUserPwd(Integer id, String pwd);


    /**
     * 接口
     * 根据用户编号获取用户
     *
     * @param userId 用户编号
     * @return 用户
     */
    User getUserByUserId(Integer userId);


    /**
     * 接口
     * 修改个人信息
     *
     * @param id      用户编号
     * @param headPic 头像
     * @param name    名称
     * @param sex
     * @return 修改成功/失败
     */
    int updateUserInfo(Integer id, String headPic, String name, String sex);

    /**
     * 查询用户列表
     *
     * @param nowPage
     * @param pageSize
     * @param nickName
     * @param startCreate
     * @param endCreate   @return
     * @param startTime
     * @param endTime
     */
    Page queryUserList(int nowPage, int pageSize, String nickName, String startCreate, String endCreate, String startTime, String endTime);

    /**
     * 修改用户信息
     *
     * @param map
     * @param id
     * @return
     */
    int update(Map map, Integer id);

    /**
     * 重置密码
     *
     * @param id
     * @param pass
     * @return
     */
    int updatePassWord(Integer id, String pass);

    /**
     * 修改用户状态
     *
     * @param id
     * @param state
     * @return
     */
    int updateUserState(Integer id, Integer state);

    /**
     * 接口
     *
     * @Description:修改用户最后登录时间
     * @Date:14:45
     * @Params: * @param null
     */
    boolean updateUserLastTime(long userId, Date date) throws DBException;

    /**
     * 换绑手机号
     *
     * @param userName 手机号
     * @param userId   用户编号
     * @return
     */

    boolean changePhone(String userName, int userId);

    /**
     * @param userId
     * @return
     */
    Map<String, Object> getUserInfoByTrendsUserId(int userId);

    /**
     * @param userId
     * @param emId
     * @param emPwd
     */
    boolean updateHxuserInfo(Integer userId, String emId, Object emPwd);

    /**
     * @param ryToken
     * @param userId
     * @param trendsUserId
     */
    void updateRYToken(String ryToken, Integer userId, String trendsUserId);

    /**
     * @param backGroundImage
     * @param userId
     * @return
     */
    boolean updatebackgroundImage(String backGroundImage, Integer userId);

    /**
     * 用户数量
     *
     * @return
     */
    Map<String, Object> userCount();

    /**
     * 功能描述:
     * 用户实名认证
     *
     * @param userId         用户编号
     * @param cardId         身份证号
     * @param cardName       身份证上的姓名
     * @param handheldPhotos 手持身份证照片
     * @param fontCard       身份证正面
     * @param reverseCard    身份证反面
     * @return:
     * @auther: wsl
     * @date: 2018/11/29 15:52
     */
    boolean certification(int userId, String cardId, String cardName, String handheldPhotos, String fontCard, String reverseCard);

    /**
     * 功能描述:
     * <p>
     * 实名认证审核
     *
     * @param id   编号
     * @param type 类型
     * @return:
     * @auther: wsl
     * @date: 2018/12/1 13:58
     */
    boolean updateIsCertification(Integer id, Integer type);
    /**
     * 功能描述:
     * 查询用户的关联商家
     *
     * @param id       用户编号
     * @param nowPage  当前页
     * @param pageSize 每页条数
     * @return:
     * @auther: wsl
     * @date: 2019/1/12 10:04
     */
    Page queryCompanyList(Integer id, int nowPage, int pageSize);
    /**
     *
     * 功能描述:
     *
     * @param:
     * @return:
     * @auther: wsl
     * @date: 2019/1/25 14:24
     */
    void updateInviteAccount(int userId, String phone);
}